package com.woniuxy.controller;

import com.woniuxy.anno.PreAuthorize;
import com.woniuxy.entity.Menu;
import com.woniuxy.service.MenuService;
import com.woniuxy.util.ResponseData;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/menu")
@AllArgsConstructor
public class MenuController {
    private MenuService menuService;

    @GetMapping("/queryUserMenu")
    public ResponseData<?> queryUserMenu(){
        List<Menu> menus = menuService.queryUserMenu(1);
        return  new ResponseData<List<Menu>>().ok(menus);
    }

    /**
     * 控制按钮权限
     * 1.基于注解实现:
     *      1.设计页面按钮权限表，和员工绑定，根据员工id查询按钮权限
     *      2.拦截器中判断是否有权限执行该接口
     *          2.1获取用户id，根据id查询到拥有的权限集合
     *          2.2.自定权限注解用在controller接口上 @PreAuthorize(value = {"goodList","queryGood"})
     *          接口一旦使用权限注解，标识该接口受访问控制接口,必须拥有指定权限才能访问
     *          2.3判断用户是否可以访问该接口，就是判断拥有权限集合中是否包含注解中中权限code值
     *
     *          优点：比较灵活控制接口权限
     *
     * 2.基于接口地址
     *      1.建保存系统所有接口地址表（controller地址）
     *      2.拦截器中判断用户是否有权限执行该接口
     *          2.1获取用户id，根据id查询到拥有的权限集合
     *          2.2获取此次请求的地址L:request。getRequestURI()
     *          2.3判断此次请求的地址是否在用户拥有的地址集合中
     *
     *
     *          优点：方便控制所有接口权限
     *
     */
    @GetMapping("/updateMenu")
    @PreAuthorize("/updateMenu")
//    @PreAuthorize({"goodList","queryGood"})

    public ResponseData<?> update(){

        return  new ResponseData<>().ok("更新成功");
    }

}
